package objetosDeJuego;

import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.Iterator;
import componentes.*;

abstract public class Torre {

	private Set posicionesADisparar;
	private int posicionX;
	private int posicionY;
	private int danio;
	private int alcance;
	
	/**
	 * @param posicionesADisparar
	 * @param posicionX
	 * @param posicionY
	 * @param danio
	 */
	
	public Torre(int posicionX, int posicionY,int danio,int alcance) {
		this.posicionesADisparar = new HashSet();
		this.danio = danio;
		this.alcance=alcance;
		this.posicionX=posicionX;
		this.posicionY=posicionY;
	}
	
	public int getDanio() {
		return danio;
	}
	
	public Set getPosicionesADisparar() {
		return posicionesADisparar;
	}
	
	public void setPosicionesADisparar(Set posicionesADisparar) {
		this.posicionesADisparar = posicionesADisparar;
	}
	
	public void disparar() {
		Enemigo enemigo;
		Posicion posicion;
		Iterator iterador = posicionesADisparar.iterator();
		
		while ( iterador.hasNext ()){
				posicion = (Posicion) iterador.next();
				if ( posicion.hayEnemigos() ){
					enemigo = posicion.getPrimerEnemigo();
					enemigo.decrementarVida(this.danio);
				}
		}		
	}

	
	abstract protected void calcularRango(int posicionX,int posicionY,Terreno escenario);
	
}
